#include <stdio.h>

int main(int argc, char const *argv[])
{
    int iData;
    int iCnt=0;

    while ( 1 )
    {
        iData = fgetc( stdin );
        fflush( stdin );

        if ( iData == '~' )
        {
            break;
        }

        fputc(iData, stdout);
        
        fflush( stdout );
         
        iCnt++;
        if ( iCnt == 5 )
        {
            printf("---");
           iCnt = 0;
        }
    }
    
    return 0;
}

/*
系统默认定义三个文件流指针:
stdin  : 标准输入     (通常是键盘)
stdout : 标准输出     (通常是显示器)
steerr : 标准出错显示  (通常是显示器)

函数 fgetc 将从 stdin 接收到的字符 发送到 stdout

注意点:
1) 键盘输入的回车键 \n 也被 fgetc 读取, fputc 也忠实的输出到 stdout
2) 一次输入多个字符时, 本来按照程序应该是敲入一个字符紧接着显示一个字符, 
   但是实际是只有敲完多个字符回车之后, fputc 才将字符显示在 stdout 上, 
   这是因为 stdio.h 中的文件读写相关函数都自动设置了缓存区, 
   stdin 通过字符 \n 刷新缓冲区,
   stdout 通过三种方式刷新缓存区:
    1) 字符 \n 
    2) fflush函数
    3) 缓存区已经写满(通常是1024个字节)
*/